home *** CD-ROM | disk | FTP | other *** search
/ Programming in Microsoft Windows with C# / Programacion en Microsoft Windows con C#.iso / Original Code / Pages and Transforms / TenCentimeterRulerAuto / TenCentimeterRulerAuto.cs next >
Encoding:
Text File  |  2001-01-15  |  2.1 KB  |  59 lines

  1. //-----------------------------------------------------
  2. // TenCentimeterRulerAuto.cs ⌐ 2001 by Charles Petzold
  3. //-----------------------------------------------------
  4. using System;
  5. using System.Drawing;
  6. using System.Windows.Forms;
  7.  
  8. class TenCentimeterRulerAuto: PrintableForm
  9. {
  10.      public new static void Main()
  11.      {
  12.           Application.Run(new TenCentimeterRulerAuto());
  13.      }
  14.      public TenCentimeterRulerAuto()
  15.      {
  16.           Text = "Ten-Centimeter Ruler (Auto)";
  17.      }
  18.      protected override void DoPage(Graphics grfx, Color clr, int cx, int cy)
  19.      {
  20.           Pen       pen   = new Pen(clr, 0.25f);
  21.           Brush     brush = new SolidBrush(clr);
  22.           const int xOffset = 10;
  23.           const int yOffset = 10;
  24.  
  25.           grfx.PageUnit  = GraphicsUnit.Millimeter;
  26.           grfx.PageScale = 1;
  27.           grfx.DrawRectangle(pen, xOffset, yOffset, 100, 10);
  28.  
  29.           StringFormat strfmt = new StringFormat();
  30.           strfmt.Alignment = StringAlignment.Center;
  31.  
  32.           for (int i = 1; i < 100; i++)
  33.           {
  34.                if (i % 10 == 0)         // Centimeter markings
  35.                {
  36.                     grfx.DrawLine(pen, 
  37.                                   new PointF(xOffset + i, yOffset),
  38.                                   new PointF(xOffset + i, yOffset + 5));
  39.  
  40.                     grfx.DrawString((i/10).ToString(), Font, brush, 
  41.                                     new PointF(xOffset + i, yOffset + 5), 
  42.                                     strfmt);
  43.                }
  44.                else if (i % 5 == 0)     // Half-centimeter markings
  45.                {
  46.                     grfx.DrawLine(pen, 
  47.                                   new PointF(xOffset + i, yOffset),
  48.                                   new PointF(xOffset + i, yOffset + 3));
  49.                }
  50.                else                     // Millimeter markings
  51.                {
  52.                     grfx.DrawLine(pen, 
  53.                                   new PointF(xOffset + i, yOffset),
  54.                                   new PointF(xOffset + i, yOffset + 2.5f));
  55.                }
  56.           }
  57.      }
  58. }
  59.